// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef UI_COMPOSITOR_TEST_LAYER_ANIMATOR_TEST_CONTROLLER_H_
#define UI_COMPOSITOR_TEST_LAYER_ANIMATOR_TEST_CONTROLLER_H_

#include "ui/compositor/layer_animator.h"

namespace ui {

// Allows tests to access sequences owned by the animator.
class LayerAnimatorTestController {
public:
    LayerAnimatorTestController(scoped_refptr<LayerAnimator> animator);

    ~LayerAnimatorTestController();

    LayerAnimator* animator() { return animator_.get(); }

    // Returns the running sequence animating the given property, if any.
    LayerAnimationSequence* GetRunningSequence(
        LayerAnimationElement::AnimatableProperty property);

    // Starts threaded animations that are waiting for an effective start time.
    void StartThreadedAnimationsIfNeeded();

    // Progresses all running animations by the given |duration|.
    void Step(const base::TimeDelta& duration);

private:
    scoped_refptr<LayerAnimator> animator_;
};

} // namespace ui

#endif // UI_COMPOSITOR_TEST_LAYER_ANIMATOR_TEST_CONTROLLER_H_
